package com.ygq.Impl;

import Exceptions.ClassNOExistException;
import VO.ClassesVO;
import com.ygq.ClassesService;
import constant.DefaultClassConstant;
import mapper.ClassesMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import result.ClassResult;

import java.util.List;
import java.util.UUID;

@Service
public class ClassesServiceImpl implements ClassesService {

    @Autowired
    private ClassesMapper classesMapper;

    @Override
    public ClassResult<List<ClassesVO>> getClasses() {
        //创建一个结果类
        ClassResult<List<ClassesVO>> listClassResult = new ClassResult<>();
        //通过mapper获取到班级全部数据
        List<ClassesVO> classes = classesMapper.getClasses();
        // 将获取到的数保存到返回结果中
        listClassResult.setData(classes);
        // 遍历班级数据，获取到默认班级和默认班级的id，为了前端方便
        for (ClassesVO aClass : classes) {
            if (aClass.getDefaultClass()==1){
                listClassResult.setDefaultClass(aClass.getClassName());
                listClassResult.setId(aClass.getId());
                break;
            }
        }
        return listClassResult;
    }

    /**
     * 修改默认班级
     * @param id
     */
    @Transactional
    public void updateDefaultClass(Integer id) {
        // 第一步先找到默认班级，将他改为常规班级
        List<ClassesVO> classes = classesMapper.getClasses();
        for (ClassesVO aClass : classes) {
            if (aClass.getDefaultClass()==1){
                // 将其改为非·默认班级
                classesMapper.updateDefaultClass(aClass.getId(), DefaultClassConstant.NO_DEFAULT_CLASS);
            }
        }
        // 第二步 根据这个id将这个班级改为默认班级
        classesMapper.updateDefaultClass(id,DefaultClassConstant.DEFAULT_CLASS);
    }

    /**
     * 删除班级
     * @param id
     */
    public void deleteClass(Integer id) {
        List<ClassesVO> classes = classesMapper.getClasses();
        String className = null;
        for (ClassesVO aClass : classes) {
            if (aClass.getId()==id){
                className=aClass.getClassName();
            }
        }
        if (className==null){
            // 抛出异常，表示这个id的班级不存在
            throw new ClassNOExistException();
        }
        UUID uuid = UUID.randomUUID();
        className = uuid +className;
        classesMapper.deleteClass(id,className);
    }

}
